#include<stdio.h>
#define INF 100000
int main(){
	int n,m,s,d;
	int book[100],cost[100],dis[100];
	int edis[100][100],ecost[100][100];
    scanf("%d %d %d %d",&n,&m,&s,&d);
    for(int i=0;i<n;i++){
    	for(int j=0;j<n;j++){
    		if(i==j)
    			edis[i][j]=ecost[i][j]=0;
    		else
    			edis[i][j]=INF;
    			ecost[i][j]=INF;
		}
	}
	for(int i=0;i<m;i++){
		int a,b,x,y;
		scanf("%d %d %d %d",&a,&b,&x,&y);
		edis[a][b]=edis[b][a]=x;
		ecost[a][b]=ecost[b][a]=y;
	}
	for(int i=0;i<n;i++){
		dis[i]=edis[s][i];
		cost[i]=ecost[s][i];
	}
	book[s]=1;
	int u,minn;
	for(int i=0;i<n-1;i++){
		minn=INF;
		for(int j=0;j<n;j++){
			if(!book[j]&&dis[j]<minn)
				minn=dis[j],u=j;
		}
		book[u]=1;
		for(int j=0;j<n;j++){
			if(edis[u][j]!=INF)
				if(dis[u]+edis[u][j]<dis[j])
					dis[j]=dis[u]+edis[u][j],cost[j]=cost[u]+ecost[u][j];
				else if(dis[u]+edis[u][j]==dis[j]&&cost[j]>cost[u]+ecost[u][j])
					cost[j]=cost[u]+ecost[u][j];
		}
	}
	printf("%d %d",dis[d],cost[d]);
	return 0;
}
